package it.traveldream.EJB.entities;

import java.io.Serializable;

import javax.persistence.*;

import java.util.ArrayList;
import java.util.List;


/**
 * The persistent class for the pacchetti database table.
 * 
 */
@Entity
@NamedQuery(name="Pacchetti.findAll", query="SELECT p FROM Pacchetti p")
public class Pacchetti implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name="id_pacchetto")
	private int idPacchetto;

	@Column(name="creato_da")
	private int creatoDa;

	private int custom;

	@Column(name="custom_da")
	private int customDa;

	private int deleted;

	private int disponibilita;

	private int sconto;

	private int tipocamera;

	//bi-directional many-to-one association to Acquisti
	@OneToMany(mappedBy="pacchetti")
	private List<Acquisti> acquistis;

	//bi-directional many-to-one association to GiftList
	@OneToMany(mappedBy="pacchetti")
	private List<GiftList> giftLists;

	//bi-directional many-to-one association to Modifiche
	@OneToMany(mappedBy="pacchetti")
	private List<Modifiche> modifiches;

	//bi-directional many-to-one association to Alloggi
	@ManyToOne
	@JoinColumn(name="alloggio")
	private Alloggi alloggi;

	//bi-directional many-to-one association to Categorie
	@ManyToOne
	@JoinColumn(name="categoria")
	private Categorie categorie;

	//bi-directional many-to-many association to Escursioni
	@ManyToMany
	@JoinTable(
		name="escursioni_x_pacchetti"
		, joinColumns={
			@JoinColumn(name="id_pacchetto")
			}
		, inverseJoinColumns={
			@JoinColumn(name="id_escursione")
			}
		)
	private List<Escursioni> escursionis;

	//bi-directional many-to-one association to TrasportiSingoli
	@ManyToOne
	@JoinColumn(name="trasporto_andata")
	private TrasportiSingoli trasportiSingoli1;

	//bi-directional many-to-one association to TrasportiSingoli
	@ManyToOne
	@JoinColumn(name="trasporto_ritorno")
	private TrasportiSingoli trasportiSingoli2;

	public Pacchetti() {
		
		escursionis = new ArrayList<Escursioni>();
	}

	public int getIdPacchetto() {
		return this.idPacchetto;
	}

	public void setIdPacchetto(int idPacchetto) {
		this.idPacchetto = idPacchetto;
	}

	public int getCreatoDa() {
		return this.creatoDa;
	}

	public void setCreatoDa(int creatoDa) {
		this.creatoDa = creatoDa;
	}

	public int getCustom() {
		return this.custom;
	}

	public void setCustom(int custom) {
		this.custom = custom;
	}

	public int getCustomDa() {
		return this.customDa;
	}

	public void setCustomDa(int customDa) {
		this.customDa = customDa;
	}

	public int getDeleted() {
		return this.deleted;
	}

	public void setDeleted(int deleted) {
		this.deleted = deleted;
	}

	public int getDisponibilita() {
		return this.disponibilita;
	}

	public void setDisponibilita(int disponibilita) {
		this.disponibilita = disponibilita;
	}

	public int getSconto() {
		return this.sconto;
	}

	public void setSconto(int sconto) {
		this.sconto = sconto;
	}

	public int getTipocamera() {
		return this.tipocamera;
	}

	public void setTipocamera(int tipocamera) {
		this.tipocamera = tipocamera;
	}

	public List<Acquisti> getAcquistis() {
		return this.acquistis;
	}

	public void setAcquistis(List<Acquisti> acquistis) {
		this.acquistis = acquistis;
	}

	public Acquisti addAcquisti(Acquisti acquisti) {
		getAcquistis().add(acquisti);
		acquisti.setPacchetti(this);

		return acquisti;
	}

	public Acquisti removeAcquisti(Acquisti acquisti) {
		getAcquistis().remove(acquisti);
		acquisti.setPacchetti(null);

		return acquisti;
	}

	public List<GiftList> getGiftLists() {
		return this.giftLists;
	}

	public void setGiftLists(List<GiftList> giftLists) {
		this.giftLists = giftLists;
	}

	public GiftList addGiftList(GiftList giftList) {
		getGiftLists().add(giftList);
		giftList.setPacchetti(this);

		return giftList;
	}

	public GiftList removeGiftList(GiftList giftList) {
		getGiftLists().remove(giftList);
		giftList.setPacchetti(null);

		return giftList;
	}

	public List<Modifiche> getModifiches() {
		return this.modifiches;
	}

	public void setModifiches(List<Modifiche> modifiches) {
		this.modifiches = modifiches;
	}

	public Modifiche addModifich(Modifiche modifich) {
		getModifiches().add(modifich);
		modifich.setPacchetti(this);

		return modifich;
	}

	public Modifiche removeModifich(Modifiche modifich) {
		getModifiches().remove(modifich);
		modifich.setPacchetti(null);

		return modifich;
	}

	public Alloggi getAlloggi() {
		return this.alloggi;
	}

	public void setAlloggi(Alloggi alloggi) {
		this.alloggi = alloggi;
	}

	public Categorie getCategorie() {
		return this.categorie;
	}

	public void setCategorie(Categorie categorie) {
		this.categorie = categorie;
	}

	public List<Escursioni> getEscursionis() {
		return this.escursionis;
	}

	public void setEscursionis(List<Escursioni> escursionis) {
		this.escursionis = escursionis;
	}

	public TrasportiSingoli getTrasportiSingoli1() {
		return this.trasportiSingoli1;
	}

	public void setTrasportiSingoli1(TrasportiSingoli trasportiSingoli1) {
		this.trasportiSingoli1 = trasportiSingoli1;
	}

	public TrasportiSingoli getTrasportiSingoli2() {
		return this.trasportiSingoli2;
	}

	public void setTrasportiSingoli2(TrasportiSingoli trasportiSingoli2) {
		this.trasportiSingoli2 = trasportiSingoli2;
	}
	
	public void addEscursione(Escursioni e){
		if(!getEscursionis().contains(e)){
			getEscursionis().add(e);
		}
		if(!e.getPacchettis().contains(this)){
			e.getPacchettis().add(this);
		}
	}

}